package com.asa.a.code;

public class NewObject {

	/**
	 * 创建对象的几种方法
	 * 
	 * 
	 * @param args
	 */
	public static void main(String[] args) {
		//new
		/**
		 * 从字节文件的角度上看
		 * new一个对象时，在字节码中，new是关键字，它会#号到
		 * 方法区中class类型，看一下这个类是否被加载好了，用它的信息
		 * 在堆空间开辟空间，创建对象
		 * dup复制，句柄一份，栈空间一份
		 * invokespecial 调用init方法，即调用构造器
		 * 
		 * 
		 * 具体的，完整的看图片《创建对象的步骤》
		 * 
		 */
		Object o = new Object();
		
		//反射
//		Class class1 = new Class<T>(null);
		
		//clone
		
		
		//反序列化
		
		
		//第三方库Objenesis
		
		
	}
	
	
	
	
	
	
}
